package com.itheima.controller;

import com.itheima.entity.Account;
import com.itheima.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

/**
 *
 *   玩注解开发
 *      要确定那些类 需要被Spring管理
 *      被Spring管理的类 也称为 组件
 *    @Component --- 组件
 *       三层架构开发
 *       子注解
 *        @Controller  控制层 servlet处理请求的层次
 *        @Service     业务层 处理业务的 service
 *        @Repository  持久层  也就是我们的dao
 *
 *   都可以替代bean标签  class 不用写了 直接到类上， id属性 变成它们value属性
 *
 *   如何使用注解完成依赖注入
 *      属性的赋值
 *
 *         @Autowired 自动装配 符合接受类型的 bean对象
 *
 *         自动装填
 *           如果 对应的类型 bean容器中 有多个对应的实现类
 *             那么这个时候还需要使用一个注解来区分具体是谁
 *
 *      JDK也提供了一种注入方式
 *            @Resource(name="accountService2")
 *
 *     完成ioc 和 di 配置
 *     还要在配置文件中 完成一个 注解扫描操作！
 *
 *     @Primary
 *        提高注入的优先级
 */
//@Component("accountController")
@Controller("accountController")
public class AccountController {

    @Autowired
    @Qualifier("accountService2")
//    @Resource(name="accountService2")
    private AccountService accountService;

    public void setAccountService(AccountService accountService) {
        this.accountService = accountService;
    }

    public void save(Account account) {
        accountService.save(account);
    }
}
